home *** CD-ROM | disk | FTP | other *** search
-
- #ifndef __TRACE__
- #define __TRACE__
-
- /* Control call csCode values: */
-
- #define kEnableTraceBuffer 128
- #define kDisableTraceBuffer 129
- #define kSetTraceFileName 130
- #define kDisableTraceFile 131
- #define kWriteTraceBuffer 132
- #define kSetAutoWriteOn 12
- #define kSetAutoWriteOff 13
-
- #define kDoPeriodicTime 14
- #define kGetTraceStatus 15
- #define kGetTraceProc 18
- #define kSetTraceOnline 10
- #define kSetTraceOffline 11
- #define kAutoTrace 200
-
- #define kSendCdevBreakMask 144
- #define kGetCdevBreakMask 145
- #define kSendCdevTraceMask 146
- #define kGetCdevTraceMask 147
-
- #define kResetEOF 142
- #define kClearTraceBuffer 143
-
- #define kStartedFromInit 150 // Sets traceOnStartup flag in trace globals
- #define kReturnTraceProcPtr 151 // Allows applications to use trace..
-
- #define kMaskSizeBytes 16 // Sizeof A mask (128 bits/8)
-
- /* Control record diagID's */
-
- #define kLostDataRecord 0x81
-
- /* When using the trace, call the driver once to get this proc ptr and
- // traceValue. Pass traceValue back each time.
- // Upper byte of diagID should be 0x60 for DAPI.
- // Use some scheme for the lower byte of diagID...
-
- // format: 01 StackPeek record
-
- // format: 02 for data block, data1 points to the block, and data2
- // is the length, data3 is ignored.
- // format: 03 for Pascal string, data1 points to string, data1 & data2 ignored
- // format: 04 - Long: data1 ignored, data2 contains four bytes, data3 ignored.
- // format: 05 - PString, Long combo. data1 = pascal string, data2 = long, data 3 ignored
- // fortmat: 06 - Type Trace: data1 points to data block. data2 = length,
- // data3 is the record's type name as a pascal string.
- // For instance: data 1,2,3 would be: &event, sizeof(event), "\pEventRecord"
- */
-
-
- // The masks are used for determining which trace points to trace... currently 128 bits..
- typedef unsigned long MaskType[4];
- typedef MaskType *MaskTypePtr;
-
- typedef pascal void (*TraceProcPtr)(long traceValue, char diagID, char partCode,
- char formatID, long data1, long data2, long data3);
-
- typedef struct
- {
- TraceProcPtr traceProcPtr; /* Function pointer to trace function (returned) */
- long traceValue; /* Function pointer to trace function (returned) */
- } TraceProcParam;
- typedef struct
- {
- MaskType Mask; /* Holds a mask of 128 bits... */
- Boolean BreakOnce;
- } TraceMaskParam; /* Could be either break or trace mask, depends of CSParam */
- typedef struct
- {
- unsigned long traceBuffSize; /* Size of trace buffer */
- short traceBuffSizeIndex; /* Index of which size is current.. */
- } TraceEnableBuffer;
- typedef struct
- {
- Ptr dataPtr; /* Where to copy record to */
- short maxLength; /* Maximum to be returned */
- short length; /* Length of record read (returned) */
- Boolean truncated; /* Record truncated flag (returned) */
- } TraceReadParam;
-
- typedef struct
- {
- char *fileName; /* Name of trace file */
- short vRefNum; /* Volume refnum */
- } EnableTraceFileParam;
-
- typedef struct
- {
- Boolean online;
- Boolean bufferEnabled;
- Boolean fileEnabled;
- Boolean autoWrite;
- long bufferSize;
- short bufferSizeIndex; /* Keeps track of a which of several possible sizes */
- long bytesBuffered;
- long bytesWritten;
- short fileVolume; /* vRefNum for trace file */
- char fileName[32]; /* Trace file name */
- Boolean breakOnceThenClear;
- Boolean DebugMarkUnset; // Used to instruct CDEV to update it's debug marks
- // since a breakpoint was called and unset.
- Boolean TraceOnStartup; // If opened at startup- true, else false... (until changed)
- } TraceStatusBlk, *TraceStatusBlkPtr;
-
- typedef struct
- {
- TraceStatusBlkPtr statusPtr;
- } TraceStatus;
-
- typedef struct
- {
- char diagID;
- char partCode;
- char formatID;
- char pad;
- long data1, data2, data3;
- } AutoTraceRec;
-
- typedef struct
- {
- union
- {
- TraceProcParam traceProc;
- TraceEnableBuffer enable;
- TraceMaskParam mask;
- TraceReadParam read;
- EnableTraceFileParam enableFile;
- TraceStatus getStatus;
- short dummy[11]; /* make sure we are at least as big as csParam must be */
- } u;
- } TraceParamBlock;
-
- #endif
-